package 第九周.homework;
//1.从键盘可以输入任意个整数（int）；2.写入文件；3.从文件读取所有的整数；4.使用插入排序对读取的整数进行排序，并将排序的结果写入原文件。
//5.使用try-catch语句处理IO异常，例如文件创建异常,例如：键盘输入 5 2 3 4,写入文件sort.txt,从文件sort.txt读取5 2 3 4
//使用选择排序对5 2 3 4排序，结果2 3 4 5,将 2 3 4 5 写入文件。
import java.io.*;
import java.util.Scanner;
import java.util.StringTokenizer;

public class WriteFile {
    public WriteFile() throws IOException {
    }

    public static void main(String[] args)throws IOException {
        Scanner scan = new Scanner(System.in);
        FileWriter a = null;
        try {
            a = new FileWriter("sort.txt");
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println("请输入数字:");
        //将用户输入的数字写入文档Sort.txt.
        String b = scan.nextLine();
        a.write("输入的数字序列：");
        a.write(b);
        a.flush();
        //将sort.txt中的数据读出来。
        Reader emmm = new FileReader("sort.txt");
        BufferedReader buff = new BufferedReader(emmm);
        System.out.println();
//        BufferedReader bufferedReader = new BufferedReader(emmm);
//        while ((b = bufferedReader.readLine())!=null){
//            System.out.println(b);
        String str = buff.readLine();
        StringTokenizer tokenizer = new StringTokenizer(b);
        int arr[] = new int[tokenizer.countTokens()];
        int i = 0;
        while (tokenizer.hasMoreTokens()) {
            arr[i] = Integer.parseInt(tokenizer.nextToken());
            i++;
        }

        insertionSort(arr);
        for (int j : arr) {
            System.out.print(j + " ");
        }

        //再将排序后的序列写入文件。
//        FileWriter a = new FileWriter("sort.txt");
        String m = "";
        for (int l = 0; l < arr.length;l++)
        {
            m += arr[l]+" ";
        }
        a.write("\n排序后数字序列:\t");
        a.write(m);
        a.flush();
        a.close();
    }
    static void insertionSort(int[] array) {
        for (int i = 1; i < array.length; i++) {
            int temp = array[i];
            for (int j = i - 1; j >= 0 && temp < array[j]; j--) {
                array[j + 1] = array[j];
                array[j] = temp;
            }
        }
    }
}